PowerGraphics 1.0 - instrukcja obsugi



Nie wiem, czy pisanie tego tekstu ma

jakikolwiek sens, bo na wstpie musz

ostrzec, e programik jest troch trudny

w obsudze. Jeli dla kogo jest zbyt

skomplikowany, to niech go nie uywa

albo si ze mn skontaktuje.

No a do czego suy takie cudo?

Oglnie rzecz biorc, do tworzenia

grafiki. A tak naprawd to program

ochrzciem jako asembler graficzny.

Graficzny - wiadomo, ale dlaczego

asembler? Ano dlatego, e w asemblerze

mona najwicej osign. Tym programem

da si zrobi prawie wszystko, na co

pozwala atarowska grafika.



Jak to dziaa?

Po uruchomieniu ekran nie wyglda zbyt

zachcajco, no ale c...

Na dole ekranu jest troch tekstu,

szczeglnie naley zwrci uwag na

napis 'LOAD'. Nie to, eby by taki

pikny, ale poniewa oznacza, e aby

cokolwiek zrobi, trzeba co wczyta.

Tym programem nie mona nic narysowa!

Naley mie wczeniej przygotowany

rysunek w jednym z nastpujcych

formatw:

*.CPR - "Trzmiel" skompresowany

*.GR8 - "Trzmiel" nieskompresowany

*.PIC - "Koala"/"XL-Art"

*.MIC - "Microillustrator"/"Kleks"

*.PGR - "PowerGraphics"

Format jest utosamiany z odpowiadajcym

mu rozszerzeniem nazwy. Jeeli tak nie

jest, to zostanie wywietlony odpowiedni

komunikat. Tak wic pakujemy dyskietk

do stacji 1, wpisujemy nazw i spacj

wybieramy format.

Jeeli odczyt przebieg bezbdnie,

to znowu zobaczymy czarny ekran.

W rogu powinien znajdowa si napis

'LINK' oznaczajcy, e moemy do ju

wczytanego rysunku doczy drugi.

Po co to wszystko? Ano dlatego, e

niemal wszystkie programy graficzne

maj rozdzielczo pionow 192 linie.

Jest to pewne marnotrawstwo, poniewa

atarka bez problemu wywietla 239 linii.

Aby je wykorzysta, naley narysowa

dwa rysunki: jeden przedstawiajcy

grn cz obrazka, drugi doln.

Najwygodniej, aby obrazki czciowo

pokryway si. Nie stanowi to problemu,

poniewa PowerGFX automatycznie wykrywa,

w ktrym miejscu obrazki nachodz na

siebie i prawidowo je skleja. Naley

tylko pamita, aby obrazki byy

w tym samym formacie oraz aby

na pierwszym obrazku wykorzystana bya

ostatnia linia, a na drugim pierwsza.

Nie wykorzystane fragmenty rysunku

powinny pozosta puste (w kolorze ta!).

Jeeli obrazki nie zachodz na siebie,

to zostan umieszczone jeden pod drugim.

Oczywicie nie ma przymusu, aby

docza drugi rysunek, wyboru

dokonujemy spacj. 'None'-'aden'

oznacza, e wystarczy nam ju wczytany

rysunek. W drugim przypadku naley

wpisa nazw pliku (uwaga! w celu

wymazania starej uywamy BackSpace).

Jeeli po zczeniu oba obrazki bda

zajmowa wicej ni 239 linii, to

pokae si komunikat 'Picture too high'.

A i jeszcze jedno! Jeeli wybralimy

format PGR, to nie bdzie 'LINK'a, lecz

od razu przejdziemy do edycji.



Jeli szczliwie przebrnlimy przez

proces wczytywania, to naszym oczom

powinien ukaza si nasz obrazek

na ekranie edycyjnym ('EDIT').

Niby nic si nie stao, a jednak

po wczytaniu program wykona par

czynnoci nad obrazkiem. Jak ju

wczeniej wspomniaem, o ile wczytalimy

dwa obrazki, to zostay sklejone.

Nastpne zostay obcite puste linii,

to znaczy te, ktre nie zawieraj

adnej grafiki. Ponadto jeli to byo

moliwe, to zosta zwony ekran

(32 zamiast 40 bajtw w linii).

Obrazek zosta automatycznie

wyporodkowany w pionie.



Majc wczytany rysunek moemy przystpi

do jego obrbki. Zasadniczo pracujemy

w jednym z dwch trybw: EDIT oraz INIT,

midzy ktrymi przechodzimy przy pomocy

klawisza RETURN. Wciskajc spacj

moemy obejrze ostateczny efekt naszej

pracy. CTRL-L umoliwia wczytanie

innego rysunku. CTRL-S powoduje

przejcie do opcji SAVE, w ktrej

wystarczy wpisa nazw, aby cay rysunek

zosta zapisany w formacie PGR.

ESC umoliwia rezygnacj z LOAD/SAVE,

w pozostaych sytuacjach powoduje

powrt do DOSa.



Najpierw omwimy opcj INIT, do ktrej,

jak ju napisaem, wchodzimy RETURNem.

Jest to edycja tabeli inicjacji.

Co to jest, spytasz pewnie? Aby ci to

wytumaczy, musz ci wyjani, jak

w ogle dziaa ten program. Jeli

jeste koderem, to nie powinno by to

dla ciebie zbyt skomplikowane.



Gdyby kto nie wiedzia, to obraz

na ekranie nie jest wywietlany cay

w jednej chwili, lecz jest tworzony

linijka po linijce, a kada linia

od prawej do lewej. Obraz jest tworzony

przez ukady ANTIC i GTIA na podstawie

zawartoci pamici oraz rejestrw

sprztowych. W pamici s dane o

ksztacie rysunku, duszkw itp.,

a w rejestrach kody kolorw, pozycji

duszkw i takie tam. Wystarczy wic

wpisa co trzeba tam gdzie trzeba i

obraz zostanie wywietlony. Zgoda, ale

tym sposobem atarowska grafika byaby

zwykle czterokolorowa w rozdzielczoci

160*192. A jak to wyglda, to chyba nie

musz kademu przypomina (chocia

czasami trafi si ciekawy rysunek...).

Co robi? Aby uzyska wicej kolorw i

duszkw naley zatrudni procesor.

Wystarczy zmienia zawarto

odpowiednich rejestrw w czasie,

gdy jest wywietlany obraz.



Po tym nieco dugim i moe niepotrzebnym

wstpie czas na konkrety: jak ju

wspomniaem obraz tworz ANTIC i GTIA.

Ten pierwszy pobiera dane z pamici

i przesya je do GTIA. Jego prac

steruje gwnie program zapisany w

pamici, znany jako DL. Jest take kilka

mniej lub bardziej wanych rejestrw.

Dla nas istotny jest tylko jeden:

DMACTL. Aby nieco uproci prac,

skrciem jego nazw do 'DC', podobne

skrty maj pozostae rejestry, nalece

do ukadu GTIA. Trzeba tylko wpisa do

nich odpowiednie wartoci. A jakie?

Takie, jakie umiecimy w tabeli 'INIT'.

Teraz wyjani, co oznaczaj dziwne

znaczki w tabeli. Jest tam zapisane,

jaka warto ma si znale w kadym

z rejestrw. Np. zapis 32arrowRIGHT DC oznacza,

e do rejestru DC zostanie zapisana

liczba $32 szesnastkowo. Jedna z liczb

jest wyrniona kursorem, ktry

przesuwamy strzakami, ale tylko na

boki! Przejcie do innego wiersza osiga

si przez wyjechanie za koniec wiersza,

w ktrym jestemy. Troch to niewygodne,

ale mona si przyzwyczai. Strzaki

"gry" i "d" su do zmniejszania

lub zwikszania o jeden. Mona te

zwyczajnie wpisa liczb (dwie cyfry

hex.). Tutaj pewna uwaga odnonie

rejestru DC. Jego starsza (lewa) cyfra

jest na stae rwna 3. Po prostu nie ma

potrzeby jej zmieniania. Drugiej cyfry

te nie moemy ustawi dowolnie. Rwna

zero oznacza wyczenie obrazu.

Warto 1 oznacza obraz wski,

2 - szeroki. Szeroko jest automatycz-

nie ustawiana przez program po wczytaniu

rysunku. Jeli do tej liczby dodamy 4,

to oznacza to wczenie przepisywania

pociskw z pamici, 8 odnosi si do

graczy. Mam nadziej, e wszyscy wiedz,

co to gracze i pociski, bo to nie jest

temat na ten artyku. Dla przykadu:

3EarrowRIGHT DC oznacza wczony szeroki obraz,

przepisywanie graczy i pociskw

($E=2+4+8). Pozostaje omwi pozostae

rejestry:

P0 - pozycja pozioma gracza 0.

Uwaga! Mona j ustawi w ten sposb, e

duszek bdzie widoczny na ekranie tylko

czciowo, albo w ogle!

P1,P2,P3 - jw. dla pozostaych graczy

M0,M1,M2,M3 - jw. dla pociskw

S0,S1,S2,S3 - szeroko/rozmiar graczy:

00 - normalna (tak jak GR.15)

01 - podwjna (jak GR.9)

03 - poczwrna

SM - szeroko pociskw. Za kady pocisk

odpowiedzialne s dwa bity. Koderzy

wiedz, o co chodzi, pozostaym

proponuj ponisz metod:

SM = szeroko pocisku 0 + 4*sz.p.1

     + $10*sz.p.2 + $40*sz.p.3

gdzie kada szeroko jest ustalana tak,

jak dla graczy (czyli 0, 1 lub 3)

G0,G1,G2,G3 - rejestry grafiki graczy

Jeli wczye przepisywanie duszkw

w DC, to zawarto Gx nie jest wana,

w przeciwnym wypadku okrelaj ksztat

duszka. Duszek ma szeroko 8 pixli,

kademu pixlowi odpowiada 1 bit.

Znowu nie bd si wdawa w szczegowe

wyjanianie, jeli dla kogo jest to

trudne, to niech si poradzi osoby

znajcej si na tym.

GM - rejestr grafiki pociskw.

Pociski maj szeroko 2 pixle,

bity 0 i 1 odpowiadaj pociskowi 0,

2 i 3 - 1 itd.

R0,R1,R2,R3 - kolory duszkw.

GC - rejestr kontroli ukadu GTIA.

Lewa cyfra okrela wczenie dodatkowych

trybw graficznych: 4-"GR.9" 8-"GR.10"

C-"GR.11". Dodanie do niej 2 powoduje,

e w miejscu, gdzie pokrywaj si

duszki 0 i 1 oraz 2 i 3 kolor czci

wsplnej bdzie rwny wartoci OR ich

kolorw. Moemy doda te 1, co spowodu-

je, e pociski bd miay wsplny kolor

okrelony w K3 (normalnie pocisk 0 ma

kolor taki, jak gracz 0 itd.).

Prawa cyfra okrela priorytet duszkw,

czyli to, czy duszki maj przykrywa

grafik, czy na odwrt. Mona j dobra

dowiadczalnie albo zerkn do odpowied-

niej literatury.

K0,K1,K2 - kolory grafiki.

W rozdzielczoci "semce" K2 oznacza

kolor ta, a K1 jasno atramentu,

K0 jest nieuywany. W "pitnastce"

wszystkie trzy s odpowiedzialne za

odpowiednie fragmenty rysunku.

K3 - jego rola zostaa omwiona przy GC

K4 - kolor ramki/ta

To wszystko, co moemy zmieni w 'INIT'.

Efekty mona od razu zaobserwowa na

ekranie.



Teraz 'EDIT'. Tutaj wpisujemy, jakie

rejestry zmieni w poszczeglnych

liniach. Odpowiedni lini wybieramy

naciskajc SHIFT oraz strzaki "gra"

"d". Po wciniciu SHIFT zostanie

"ucita" cz rysunku poniej linii,

w ktrej jestemy. Tak wic moemy

zobaczy, jak wyglda linia, nad ktr

pracujemy. CTRL arrowUP  lub arrowDOWN  pozwala na

przeniesienie do pierwszej/ostatniej

linii (jest ich 240, ostatnia ma numer

239=$EF). Pewna niedogodno - przy

skrolowaniu rysunku obraz troch

"mruga". Numer linii jest widoczny po

'L='. Obok tego widnieje napis 'D=',

ktry oznacza, jaki rozkaz DL dotyczy

tej linii. Dalej mamy 'B=', po ktrym

jest dwjkowy zapis liczby, na ktrej

stoi kursor. Poniej widnieje napis

w stylu '00arrowRIGHT A0 00arrowRIGHT A1 ... 00arrowRIGHT AM'.

Oznacza on, jakie wartoci dotyczce

duszkw w tej linii znajduj si w

pamici. Pamitaj, e jeli nie

wczye przepisywania duszkw, to te

liczby nie bd miay adnego znaczenia.

Jeli jednak je wczye, to wtedy rola

Ax jest taka, jak Gx z tym, e odnosi

si tylko do jednej linii. Kursorem

poruszamy w sposb identyczny, jak w

'INIT', rwnie tak samo wpisujemy

liczby. Jeeli zejdziemy do wiersza

tekstu poniej, ktry na razie jest

pusty, to okae si, e tam te moemy

wpisywa liczby (i nie tylko). Jest to

obszar, w ktrym wklepujemy PROGRAM w

do specyficznym jzyku, ktry jest

bardzo podobny do asemblera. Wana jest

wic znajomo podstaw asemblera.

Koderzy mog pomin nastpny akapit.



W procesorze jest kilka rejestrw,

w ktrych mona umieszcza liczby.

Nas bdzie interesowa tylko

najwaniejszy, czyli tzw. akumulator.

Aby wpisa liczb do jakiego rejestru,

to naley j najpierw "zaadowa" do

akumulatora i dopiero std zapisa j

do rejestru, przy czym raz zaadowan

liczb mona wpisa po kolei do kilku

rejestrw. Instrukcja odpowiedzialna

za zaadowanie liczby do akumulatora

wyglda tak:  LDA #liczba, np. LDA #$3E

Instrukcja powodujca zapisanie akumula-

tora brzmi tak: STA gdzie, np. STA $d400

Poznamy jeszcze jedn bardzo ciekaw

instrukcj:  NOP

Ta instrukcja po prostu nic nie robi(!).

Wbrew pozorom nie jest to bezsensowne,

gdy "wykonanie" tej instrukcji zabiera

procesorowi troch czasu. Ot

naleaoby powiedzie, e wykonanie

innych instrukcji te zajmuje troch

czasu. Czas jest mierzony w cyklach.

LDA # trwa 2 cykle, STA - 4 cykle,

NOP - 2 cykle. To by byo na tyle

wykadu o asemblerze.



Jak wic napisa ten program?

Posugujemy si trzema typami

instrukcji, dla przykadu:

00 : tak, tak, te dwa zera to jest

instrukcja. Powoduje ona wpisanie liczby

zero do akumulatora. Jest to po prostu

LDA #$00. Moemy poda dowoln,

jednobajtow liczb szesnastkow.

arrowRIGHT P0 : a ta instrukcja powoduje zapisanie

zawartoci akumulatora do rejestru P0.

Odpowiada to instrukcji STA. Nie ma

potrzeby wpisywania strzaki, naley

wpisa pierwsz liter, a potem drug

(ewentualnie cyfr).

-- : instrukcja NOP, uzyskujemy j

przez wcinicie CLEAR.



Oprcz wpisywania komend mamy pewne

(prymitywne) opcje edycyjne:

INSERT - dziaa jak CTRL-INSERT

w edytorze systemowym

DELETE - jak standardowy CTRL-DELETE

SHIFT-INSERT - skopiwanie zapisu w tej

linii do linii poniej z jednoczesnym

przejciem do tej linii

/ - zmiana LDA/STA, waciwie to

nieprzydatna.

Poprawiania dokonujemy najedajc

w odpowiednie miejsce i wpisujc now

instrukcj. Warto zauway, e czas

trwania instrukcji jest proporcjonalny

do tego, ile znakw ona zajmuje

('xx' - 2 cykle, 'arrowRIGHT xx ' - 4, '--' - 2).

W kadej linii mamy pewn ilo czasu,

ktra ogranicza ilo instrukcji, jakie

moemy wpisa. Trzeba te pamita,

e jeli zmienimy kolor w poowie

wywietlania linii, to kolor zmieni si

w rodku linii. Ten sam kolor mona wic

zmienia kilkukrotnie uzyskujac wicej

ni 4 kolory w linii, nie mwic ju

o tym, e w kadej linii moemy ustawi

inne kolory. Moliwa jest take zmiana

rozdzielczoci w rodku linii,

dwukrotne wywietlenie tego samego

duszka itp. Efektw moliwych do

uzyskanie jest naprawd sporo, chocia

wymagaj one pewnego nakadu pracy.



To by byo na tyle o obsudze tego

skromnego programiku. Jeli masz

z nim jakie problemy, chcesz co wicej

wiedzie, to skontaktuj si ze mn.

Zrb to take, jeli udao ci si

cokolwiek zmajstrowa przy pomocy PG.

Nie bd wicej pisa, bo ten tekst

i tak jest za dugi.



Program powsta w styczniu 1996.



Program i instrukcj napisa

                             Fox

01/03/96 18:11



Adres:

  Piotr Fusik / Fox

  ul. Cicha 9

  05-300 Misk Mazowiecki



